In typical systems, all packet pointers received from a network interface card are taken by a thread executing on a core of a processor from a receive descriptor location and placed into a queue for processing by an application. This process creates a bottleneck on a core and prevents scalability when throughput exceeds the capacity of the single core to move the receive data pointers into the application queue. Additionally, in typical systems, a bottleneck also exists in the transmission of packets, as a single core executes a thread to execute a similar process to move data from an application queue to a network interface card for transmission.